package cn.iocoder.yudao.module.wms.convert.inventory;

import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.wms.controller.admin.inventory.vo.InventoryRespVO;
import cn.iocoder.yudao.module.wms.dal.dataobject.inventory.InventoryDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.inventoryclassify.InventoryClassifyDO;
import cn.iocoder.yudao.module.wms.dal.dataobject.unit.UnitDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;
import java.util.Map;

/**
 * @Author: zengjs
 * @Description: TODO
 * @DateTime: 2024/10/30 9:23
 **/
@Mapper
public interface InventoryConvert {

    InventoryConvert INSTANCE = Mappers.getMapper(InventoryConvert.class);

    default List<InventoryRespVO> convertList(List<InventoryDO> list, Map<Long, InventoryClassifyDO> classifyMap, Map<Long, UnitDO> unitMap) {
        return CollectionUtils.convertList(list, inventory -> convert(inventory, classifyMap.get(inventory.getClassifyId()), unitMap.get(inventory.getUnitId())));
    }

    /**
     * 存货分类,计量单位转换
     * @param inventory 存货档案
     * @param classify  存货分类
     * @param unit  计量单位
     * @return  存货档案-存货分类名称--计量单位名称
     */
    default InventoryRespVO convert(InventoryDO inventory, InventoryClassifyDO classify, UnitDO unit) {
        InventoryRespVO inventoryVO = BeanUtils.toBean(inventory, InventoryRespVO.class);
        if (classify != null) {
            inventoryVO.setClassifyName(classify.getName());
        }
        if (unit != null) {
            inventoryVO.setUnitName(unit.getName());
        }
        return inventoryVO;
    }
}
